/***************************************************************************/
/* Procedimiento:  AvisoArriboInsertar
/* Descripcion:   Insertar o Modifica una fila en la tabla AvisoArribo
/* Parametros:    ?InfoParametros
/*                pTransaccion. Numero identificador de la Transaccion
/*                pMensaje. Mensaje de comfirmacion o excepcion
/* Comentarios:         
/****************************************************************************/

PROCEDURE  AvisoArriboInsertarModificar(pnidDocumento NUMBER, pnidPais_Origen NUMBER, pnidPais_Destino NUMBER, 
								pnidPuerto_Origen NUMBER, pnidPuerto_Destino NUMBER, pTRB NUMBER, 
								peslora NUMBER, pcalado NUMBER, pmanga NUMBER, 
								pTRN NUMBER, pfecha_ETA VARCHAR2, pfecha_ETF VARCHAR2, 
								pnoExisteBuque VARCHAR2, pletraLlamada VARCHAR2, pbandera VARCHAR2, 
								pnidBuque NUMBER, pnidViaje NUMBER, pnidEmpRemolcador NUMBER, 
								pnidEmpPilotos NUMBER, pnidCargaImpo NUMBER, pnidCargaExpo NUMBER, 
								pnidCargaCabEnt NUMBER, pnidCargaCabSal NUMBER, ptonelaje_Expo NUMBER, 
								ptonelaje_Impo NUMBER, ptonelaje_CabEnt NUMBER, ptonelaje_CabSal NUMBER, 
								pdescargaXDia NUMBER, pcargaXDia NUMBER, pdescargaXDiaCabEnt NUMBER, 
								pcargaXDiaCabSal NUMBER, pMMSI VARCHAR2, pfacturar VARCHAR2, 
								pnombre_Buque VARCHAR2, pdescCargaExpo VARCHAR2, pdescCargaImpo VARCHAR2, 
								pdescCargaCabEnt VARCHAR2, pdescCargaCabSal VARCHAR2, pmotivoCancelacion VARCHAR2, 
								pobservaciones VARCHAR2, pcapitan VARCHAR2, pnum_Serie VARCHAR2, 
								pnidPais_OrigenCarga NUMBER,  pTransaccion OUT NUMBER, pMensaje OUT VARCHAR2)
AS
vExisteRegistro NUMBER(1);
BEGIN
  SELECT count(*)
  INTO   vExisteRegistro
  FROM   AvisoArribo
  WHERE  nidDocumento=pNidDocumento;
  
  IF vExisteRegistro=0 THEN
    INSERT INTO AvisoArribo
	           (nid, nidDocumento, nidPais_Origen, 
				nidPais_Destino, nidPuerto_Origen, nidPuerto_Destino, 
				TRB, eslora, calado, 
				manga, TRN, fecha_ETA, 
				fecha_ETF, noExisteBuque, letraLlamada, 
				bandera, nidBuque, nidViaje, 
				nidEmpRemolcador, nidEmpPilotos, nidCargaImpo, 
				nidCargaExpo, nidCargaCabEnt, nidCargaCabSal, 
				tonelaje_Expo, tonelaje_Impo, tonelaje_CabEnt, 
				tonelaje_CabSal, descargaXDia, cargaXDia, 
				descargaXDiaCabEnt, cargaXDiaCabSal, MMSI, 
				facturar, nombre_Buque, descCargaExpo, 
				descCargaImpo, descCargaCabEnt, descCargaCabSal, 
				motivoCancelacion, observaciones, capitan, 
				num_Serie, nidPais_OrigenCarga)
    VALUES     (seq_AvisoArribo.nextval, pnidDocumento, pnidPais_Origen, 
				pnidPais_Destino, pnidPuerto_Origen, pnidPuerto_Destino, 
				pTRB, peslora, pcalado, 
				pmanga, pTRN, to_date(pfecha_ETA,'DD/MM/YYYY HH24:MI:SS'), 
				to_date(pfecha_ETF,'DD/MM/YYYY HH24:MI:SS'), pnoExisteBuque, pletraLlamada, 
				pbandera, pnidBuque, pnidViaje, 
				pnidEmpRemolcador, pnidEmpPilotos, pnidCargaImpo, 
				pnidCargaExpo, pnidCargaCabEnt, pnidCargaCabSal, 
				ptonelaje_Expo, ptonelaje_Impo, ptonelaje_CabEnt, 
				ptonelaje_CabSal, pdescargaXDia, pcargaXDia, 
				pdescargaXDiaCabEnt, pcargaXDiaCabSal, pMMSI, 
				pfacturar, pnombre_Buque, pdescCargaExpo, 
				pdescCargaImpo, pdescCargaCabEnt, pdescCargaCabSal, 
				pmotivoCancelacion, pobservaciones, pcapitan, 
				pnum_Serie, pnidPais_OrigenCarga);
  ELSE
    UPDATE AvisoArribo
    SET    nidDocumento=pnidDocumento, nidPais_Origen=pnidPais_Origen, 
			nidPais_Destino=pnidPais_Destino, nidPuerto_Origen=pnidPuerto_Origen, nidPuerto_Destino=pnidPuerto_Destino, 
			TRB=pTRB, eslora=peslora, calado=pcalado, 
			manga=pmanga, TRN=pTRN, fecha_ETA=to_date(pfecha_ETA,'DD/MM/YYYY HH24:MI:SS'), 
			fecha_ETF=to_date(pfecha_ETF,'DD/MM/YYYY HH24:MI:SS'), noExisteBuque=pnoExisteBuque, letraLlamada=pletraLlamada, 
			bandera=pbandera, nidBuque=pnidBuque, nidViaje=pnidViaje, 
			nidEmpRemolcador=pnidEmpRemolcador, nidEmpPilotos=pnidEmpPilotos, nidCargaImpo=pnidCargaImpo, 
			nidCargaExpo=pnidCargaExpo, nidCargaCabEnt=pnidCargaCabEnt, nidCargaCabSal=pnidCargaCabSal, 
			tonelaje_Expo=ptonelaje_Expo, tonelaje_Impo=ptonelaje_Impo, tonelaje_CabEnt=ptonelaje_CabEnt, 
			tonelaje_CabSal=ptonelaje_CabSal, descargaXDia=pdescargaXDia, cargaXDia=pcargaXDia, 
			descargaXDiaCabEnt=pdescargaXDiaCabEnt, cargaXDiaCabSal=pcargaXDiaCabSal, MMSI=pMMSI, 
			facturar=pfacturar, nombre_Buque=pnombre_Buque, descCargaExpo=pdescCargaExpo, 
			descCargaImpo=pdescCargaImpo, descCargaCabEnt=pdescCargaCabEnt, descCargaCabSal=pdescCargaCabSal, 
			motivoCancelacion=pmotivoCancelacion, observaciones=pobservaciones, capitan=pcapitan, 
			num_Serie=pnum_Serie, nidPais_OrigenCarga=pnidPais_OrigenCarga
    WHERE  nidDocumento=pNidDocumento;
  END IF;
  
  COMMIT;
  pTransaccion := 1;
  pMensaje := 'Terminado OK';
  dbms_output.put_line('Terminado OK');

EXCEPTION
  WHEN OTHERS THEN
    pTransaccion := 0;
    pMensaje := 'Error en  AvisoArribo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm;
    dbms_output.put_line('Error en  AvisoArribo_InsertarModificar:' || SQLCODE || ' Mensaje: ' || sqlerrm);
END;
